#include "qlscustomplottest.h"
#include "ui_qlscustomplottest.h"
#include "../../inc/FFT/qlsfft.h"

static double SAMPLE_RATE = 5;
static double PI = 3.1415926;

QlsCustomPlotTest::QlsCustomPlotTest(QWidget *parent) :
	QWidget(parent),
	ui(new Ui::QlsCustomPlotTest)
{
	ui->setupUi(this);

	/* 绘图初始化 */
	PlotInit();

	/* 生成正弦波时域信号 */
	CreateSin(QCPRange(0, 512));

	/* 绘制时域谱 */
	ui->customPlot1->SetData(m_key, m_value1);

	/* FFT */
	QLsFFT::FFT(m_value1, m_value2);
	ui->customPlot2->SetData(m_key.mid(0, m_value2.size()), m_value2);
}

QlsCustomPlotTest::~QlsCustomPlotTest()
{
	delete ui;
}

/* 生成正弦波时域信号 */
void QlsCustomPlotTest::CreateSin(QCPRange xRange)
{
	int N = xRange.size();

	for(int i = xRange.lower; i < xRange.upper; i++)
	{
		double val = sin(2*PI*SAMPLE_RATE*i/N);
//		qDebug() << __FUNCTION__ << i << val;
		m_key.append(i);
		m_value1.append(val);
	}
}

/* 绘图初始化 */
void QlsCustomPlotTest::PlotInit()
{
	/* 时域 */
	ui->customPlot1->legend->setVisible(true);						/* 设定右上角图形标注可见 */
	ui->customPlot1->legend->setFont(QFont("Helvetica", 9));		/* 设定右上角图形标注的字体 */
	ui->customPlot1->xAxis->setRange(0, 512);						/* 设置X轴坐标范围 */
	ui->customPlot1->yAxis->setRange(-1, 1);						/* 设置Y轴坐标范围 */
	ui->customPlot1->axisRect()->setupFullAxesBox();				/* 在坐标轴右侧和上方画线，和X/Y轴一起形成一个矩形 */
	ui->customPlot1->AddGraph("时域", QColor(0, 0, 255));
	ui->customPlot1->xAxis->setLabel("时间（s）");
	ui->customPlot1->yAxis->setLabel("幅度（v）");

	/* 频谱 */
	ui->customPlot2->legend->setVisible(true);						/* 设定右上角图形标注可见 */
	ui->customPlot2->legend->setFont(QFont("Helvetica", 9));		/* 设定右上角图形标注的字体 */
	ui->customPlot2->xAxis->setRange(0, 512 / 2);					/* 设置X轴坐标范围 */
	ui->customPlot2->yAxis->setRange(-10, 10);						/* 设置Y轴坐标范围 */
	ui->customPlot2->axisRect()->setupFullAxesBox();				/* 在坐标轴右侧和上方画线，和X/Y轴一起形成一个矩形 */
	ui->customPlot2->AddGraph("频谱", QColor(0, 0, 255));
	ui->customPlot2->xAxis->setLabel("频率（hz）");
	ui->customPlot2->yAxis->setLabel("功率（dbw）");

	/* 相位谱 */
	ui->customPlot3->legend->setVisible(true);						/* 设定右上角图形标注可见 */
	ui->customPlot3->legend->setFont(QFont("Helvetica", 9));		/* 设定右上角图形标注的字体 */
	ui->customPlot3->xAxis->setRange(0, 512 / 2);					/* 设置X轴坐标范围 */
	ui->customPlot3->yAxis->setRange(-10, 10);						/* 设置Y轴坐标范围 */
	ui->customPlot3->axisRect()->setupFullAxesBox();				/* 在坐标轴右侧和上方画线，和X/Y轴一起形成一个矩形 */
	ui->customPlot3->AddGraph("相位谱", QColor(0, 0, 255));
	ui->customPlot3->xAxis->setLabel("时间（s）");
	ui->customPlot3->yAxis->setLabel("频率（hz）");
}
